/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package ASAInstruction;

import ASAExpression.ASAExpr;
import exceptions.ExecutionException;

/**
 * Instruction de la boucle while.
 * @author O.Riad
 * @author D.Romain
 * 
 */
public class ASAInstructWhile extends ASAInstruction{
    
    private ASAExpr exprWhile;
    private ASAInstruction instrWhile;
    
    /**
     * Construit une instruction while
     * @param expr la condition du while
     * @param instr l'instruction à exécuter en cas 
     */
    public ASAInstructWhile(ASAExpr expr, ASAInstruction instr){
        this.exprWhile = expr;
        this.instrWhile = instr;
    }

    /**
     * Execute l'Intruction tant que l'expression
     * est vrai (!= 0)
     * @return 1 si l'exécution s'est bien passée 
     * @throws ExecutionException 
     */
    @Override
    public int execute() throws ExecutionException {        
        while(this.exprWhile.evalue() != 0){
            this.instrWhile.execute();
        }
        return 1;
    }

}
